iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
Mobile Development

老姐好像要用 Kotlin 寫專案,能撐30天嗎?系列 第 8

做出選擇的第八天:H2 資料庫,就決定是你了

  • 分享至 

  • xImage
  •  

用假資料撐了幾天,但是老姐也差不多要開始開發建立題目、刪除題目的部分了。

之前建立了在新 pacakge response 底下的新類別 TopicResponse 。

https://ithelp.ithome.com.tw/upload/images/20200917/201291979FaOPD083X.png
https://ithelp.ithome.com.tw/upload/images/20200917/20129197hNIYJ9i2pE.png
https://ithelp.ithome.com.tw/upload/images/20200917/20129197r0ZURB3Xi2.png
https://ithelp.ithome.com.tw/upload/images/20200917/20129197g2iJwRhPcm.png

package com.katelee.response

import java.util.UUID

data class TopicResponse (
        val id: UUID,
        val avatar: String,
        val name: String,
        val attendance: String
)
get("/api/topics") {
            val list = ArrayList<TopicResponse>()
            for (i in 0..10) {
                list.add(TopicResponse(
                        id = UUID.randomUUID().toString(),
                        name = "從前從前有碗" + listOf("海龜湯", "孟婆湯", "玉米湯", "南瓜湯").random(),
                        avatar = "https://imgur.com/l0swFL1.jpg",
                        attendance = (0..10).random().toString() + "人")
                )
            }
            call.respond(list)
        }

各資料庫的語法上有些微的差異,但大致上是一樣的,所以上架之前都還能更換,最重要的是先建好 table 。

先排除一看就知道是配套雲端服務的 Amazon Redshift, Azure SQL Database 以外,也看到熟悉的 MS Server, MongoDB, MySQL, Oracle, PostgreSQL, SQLite ,在看過 http://www.h2database.com/html/features.html 之後,決定試試 H2 資料庫。

https://ithelp.ithome.com.tw/upload/images/20200917/20129197m5pdG8Zg8W.png

除了 H2 資料庫本身是用 Java 開發以外,支援加密資料和 SSL 連線,資料儲存方式可以選擇 in-memory 或是 persistentin-memory 就是只存在記憶體,關機就清空,還滿適合開發階段。

目前因為只打算讓這台電腦的 Ktor 程式可以連線,所以選擇 Embedded Mode ,如果將來打算讓其他電腦也來連線可能會改成 Server Mode 或是混用的 Mixed Mode

https://ithelp.ithome.com.tw/upload/images/20200917/201291975GVloQPxbz.png

下方有個小提示說我還沒下載 driver ,點下去後下載的是一個 jar 檔,接著按下測試連線的按鈕。

https://ithelp.ithome.com.tw/upload/images/20200917/20129197KqWr0OkCI5.png

遺憾地出現了錯誤 [90067][90067] Connection is broken: "java.net.ConnectException: Connection refused (Connection refused): localhost:9092" [90067-200] java.net.ConnectException: Connection refused (Connection refused).

不過關掉視窗後還是出現了可以手動輸入 SQL 的 H2 console ,所以應該不是大問題?

https://ithelp.ithome.com.tw/upload/images/20200917/20129197H6czfT3ctO.png

雖然理想上是在程式裡建立和查詢資料,但 H2 console 可以迅速測試語法,不用重新編譯整個 Ktor ,所以可以在 H2 console 測試過再放進程式。

今天有點晚了,明天再多撥出一些時間串接這個新的資料庫吧。

本次鐵人賽的作品在放進更多內容後已經成書,書名是《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》,歡迎購買唷。https://www.tenlong.com.tw/products/9789864348978


上一篇
製造貓貓的第七天:人人愛 Kotlin Extension
下一篇
些微挫折的第九天:Exposed 框架
系列文
老姐好像要用 Kotlin 寫專案,能撐30天嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言